/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function(s) {
    const position = new Map();
    const n = s.length;
    for (let [i, ch] of Array.from(s).entries()) {
        if (position.has(ch)) {
            position.set(ch, -1);
        } else {
            position.set(ch, i);
        }
    }
    console.log(position)
    let first = n;
    for (let pos of position.values()) {
        if (pos !== -1 && pos < first) {
            first = pos;
        }
    }
    if (first === n) {
        first = -1;
    }
    return first;
};
var s = "loveleetcode"
console.log(firstUniqChar(s))
// 作者：力扣官方题解  方法2、使用哈希表存储索引
// 链接：https://leetcode.cn/problems/first-unique-character-in-a-string/solutions/531740/zi-fu-chuan-zhong-de-di-yi-ge-wei-yi-zi-x9rok/
//     来源：力扣（LeetCode）
// 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
//时间复杂度：O(n)，其中 n 是字符串 s 的长度。
// 第一次遍历字符串的时间复杂度为 O(n)，
// 第二次遍历哈希映射的时间复杂度为 O(∣Σ∣)，由于 s 包含的字符种类数一定小于 s 的长度，
// 因此 O(∣Σ∣)在渐进意义下小于 O(n)，可以忽略。

//空间复杂度：O(∣Σ∣)，其中 Σ\SigmaΣ 是字符集，在本题中 s 只包含小写字母，因此 ∣Σ∣≤26。我们需要 O(∣Σ∣)的空间存储哈希映射。

